package org.dromara.iot.domain;

import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;

import java.io.Serial;

/**
 * 电梯事件对象 iot_elevator_event
 *
 * @author lsl
 * @date 2025-04-16
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("iot_elevator_event")
public class IotElevatorEvent extends BaseEntity {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 事件ID
     */
    @TableId(value = "event_id")
    private Long eventId;

    /**
     * 事件单号（对应eventid，抓拍时间+事件类型）
     */
    private String eventCode;

    /**
     * 设备ID（对应devid）
     */
    private String deviceId;

    /**
     * 事件类型（按位掩码存储，对应event字段）
     */
    private Long eventType;

    /**
     * 门状态 0=关闭 1=打开 2=未知（dooropen）
     */
    private Integer doorStatus;

    /**
     * 电瓶车状态 0=无 1=有（motostatus）
     */
    private Integer motorcycleStatus;

    /**
     * 轿厢人数（personcount）
     */
    private Integer personCount;

    /**
     * 上报时间（timestamp转换）
     */
    private Date reportTime;

    /**
     * 平层状态 0=非平层 1=平层（elevstatus.levelingstatus）
     */
    private Integer levelingStatus;

    /**
     * 运行速度 cm/s（elevstatus.speed）
     */
    private Integer runSpeed;

    /**
     * 气压值 Pa（elevstatus.press）
     */
    private Integer airPressure;

    /**
     * 实际楼层（elevstatus.elevactpos）
     */
    private Integer currentFloor;

    /**
     * 楼层名称（elevstatus.elevname）
     */
    private String floorName;

    /**
     * 累计运行次数（acinfo.acelevtimes）
     */
    private Integer acOperationCount;

    /**
     * 累计开门次数（acinfo.acopentimes）
     */
    private Integer acOpenCount;

    /**
     * 累计里程 单位米（acinfo.acmile）
     */
    private Integer acMileage;

    /**
     * 累计运行时间 秒（acinfo.actime）
     */
    private Integer acRunDuration;

    /**
     * 异常声音 0=无 1=有（event包含2048时设置）
     */
    private Integer abnormalSound;

    /**
     * 急停状态 0=正常 1=急停（event包含4194304时设置）
     */
    private Integer emergencyStop;

    /**
     * 数据签名（对应sign）
     */
    private String signature;

    /**
     * 随机数（对应nonce）
     */
    private String nonce;

    /**
     * 关联图片文件ID
     */
    private Long ossId;

    /**
     * 关联电梯ID
     */
    private Long elevatorId;

    /**
     * 电梯名称
     */
    private String elevatorName;

    /**
     * 使用单位
     */
    private String useUnit;

    /**
     * 维保单位
     */
    private String serverUnit;

    /**
     * 告警解除时间
     */
    private Date removeTime;

    /**
     * 持续时长(秒)
     */
    private Long eventDuration;

    /**
     * 备注
     */
    private String remark;
}
